User:Ahm masum/common.js
Appearance
Code that you insert on this page could contain malicious content capable of compromising your account. If you import a script from another page with "importScript", "mw.loader.load", "iusc", or "lusc", take note that this causes you to dynamically load a remote script, which could be changed by others. Editors are responsible for all edits and actions they perform, including by scripts. User scripts are not centrally supported and may malfunction or become inoperable due to software changes. A guide to help you find broken scripts is available. If you are unsure whether code you are adding to this page is safe, you can ask at the appropriate village pump. This code will be executed when previewing this page. |
The accompanying .css page for this skin is at User:Ahm masum/common.css. |
/* Any JavaScript here will be loaded for all users on every page load. */
function ddm() {
// Variables, change these in case you need to set other class names (mmhide_ for
// contribute users for example)
var parentClass = 'isParent'; //gets applied when the LI has a nested UL
var activeParentClass = 'isActive'; //gets applied when the nested UL is visible
var preventHoverClass = 'nohover'; //denotes a navigation that should not get any hover effects
var indicateJSClass = 'dhtml'; //gets applied to the main navigation when Javascript is available
var toHideClass = 'hiddenChild'; //gets applied to hide the nested UL
var toShowClass = 'shownChild'; //gets applied to show the nested UL
var currentClass = 'current'; //denotes the current active sub element and prevents collapsing
var d = document.getElementById('nav'); //denotes the navigation element
// if DOM is not available stop right here.
if (!document.getElementById && !document.createTextNode) {
return;
}
// if the navigation element is available, apply the class denoting DHTML capabilities
if (d) {
d.className += d.className == '' ? indicateJSClass : ' ' + indicateJSClass;
var lis, i, firstUL, j, apply;
// loop through all LIs and check which ones have a nested UL
lis = d.getElementsByTagName('li');
for (i = 0; i < lis.length; i++) {
firstUL = lis[i].getElementsByTagName('ul')[0];
// if there is a nested UL, deactivate the first nested link and apply the class to show
// there is a nested list
if (firstUL) {
lis[i].childNodes[0].onclick = function() {
return false;
};
lis[i].className += lis[i].className == '' ? parentClass : ' ' + parentClass;
// check if there is a "current" element
apply = true;
if (new RegExp('\\b' + currentClass + '\\b').test(lis[i].className)) {
apply = false;
}
if (apply) {
for (j = 0; j < firstUL.getElementsByTagName('li').length; j++) {
if (new RegExp('\\b' + currentClass + '\\b').test(firstUL.getElementsByTagName('li')[j].className)) {
apply = false;
break;
}
}
}
// if there is no current element, apply the class to hide the nested list
if (apply) {
firstUL.className += firstUL.className == '' ? toHideClass : ' ' + toHideClass;
// check if there is a class to prevent hover effects and only apply the function
// onclick if that is the case, otherwise apply it onclick and onhover
if (new RegExp('\\b' + preventHoverClass + '\\b').test(d.className)) {
lis[i].onclick = function() {
doddm(this);
};
} else {
lis[i].onclick = function() {
doddm(this);
};
lis[i].onmouseover = function() {
doddm(this);
};
lis[i].onmouseout = function() {
doddm(null);
};
}
// if there is a current element, define the list as being kept open and apply the
// classes to show the nested list and define the parent LI as an active one
} else {
lis[i].keepopen = 1;
firstUL.className += firstUL.className == '' ? toShowClass : ' ' + toShowClass;
lis[i].className = lis[i].className.replace(parentClass, activeParentClass);
}
}
}
}
// function to show and hide the nested lists and add the classes to the parent LIs
function doddm(o) {
var childUL, isobj, swap;
// loop through all LIs of the navigation
lis = d.getElementsByTagName('li');
for (i = 0; i < lis.length; i++) {
isobj = lis[i] == o;
// function to exchange class names in an object
swap = function(tmpobj, tmporg, tmprep) {
tmpobj.className = tmpobj.className.replace(tmporg, tmprep);
};
// if the current LI does not have an indicator to be kept visible
if (!lis[i].keepopen) {
childUL = lis[i].getElementsByTagName('ul')[0];
// check if there is a nested UL and if the current LI is not the one clicked on
// and exchange the classes accordingly (ie. hide all other nested lists and
// make the LIs parent rather than active.
if (childUL) {
if (new RegExp('\\b' + preventHoverClass + '\\b').test(d.className)) {
if (new RegExp('\\b' + activeParentClass + '\\b').test(lis[i].className)) {
swap(childUL, isobj ? toShowClass : toHideClass, isobj ? toHideClass : toShowClass);
swap(lis[i], isobj ? activeParentClass : parentClass, isobj ? parentClass : activeParentClass);
} else {
swap(childUL, isobj ? toHideClass : toShowClass, isobj ? toShowClass : toHideClass);
swap(lis[i], isobj ? parentClass : activeParentClass, isobj ? activeParentClass : parentClass);
}
} else {
swap(childUL, isobj ? toHideClass : toShowClass, isobj ? toShowClass : toHideClass);
swap(lis[i], isobj ? parentClass : activeParentClass, isobj ? activeParentClass : parentClass);
}
}
}
}
}
}
window.onload = function() {
ddm();
// add other functions to be called onload below
};
/* User:Equazcion/ScriptInstaller.js */
//importScript( 'User:Equazcion/ScriptInstaller.js' );// Backlink: [[User:Equazcion/ScriptInstaller.js]]
//importScript('User:Jfmantis/pagesCreated.js'); //Linkback: [[User:Jfmantis/pagesCreated.js]] Added by Script installer
//importScript('User:Equazcion/ContribsTabVector.js'); //Linkback: [[User:Equazcion/ContribsTabVector.js]] Added by Script installer
//importScript('User:קיפודנחש/cat-a-lot.js'); //Linkback: [[User:קיפודנחש/cat-a-lot.js]] Added by Script installer
//importScript('User:Ravid ziv/highlightSearch.js'); //Linkback: [[User:Ravid ziv/highlightSearch.js]] Added by Script installer
//importScript('User:Anomie/linkclassifier.js'); //Linkback: [[User:Anomie/linkclassifier.js]] Added by Script installer
//importScript('User:Ais523/adminrights.js'); //Linkback: [[User:Ais523/adminrights.js]] Added by Script installer
//importScript('User:PrimeHunter/My subpages.js'); //Linkback: [[User:PrimeHunter/My subpages.js]] Added by Script installer
//importScript('User:V111P/js/wikiTranslTools.js'); //Linkback: [[User:V111P/js/wikiTranslTools.js]] Added by Script installer
//importScript('User:Mvolz/veCiteFromURL.js'); //Linkback: [[User:Mvolz/veCiteFromURL.js]] Added by Script installer
//importScript('User:Equazcion/CustomSummaryPresets.js'); //Linkback: [[User:Equazcion/CustomSummaryPresets.js]] Added by Script installer
//importScript('User:N8wilson/AQFetcher.js'); //Linkback: [[User:N8wilson/AQFetcher.js]] Added by Script installer
//importScript('User:Fred Gandt/subdueLinks.js'); //Linkback: [[User:Fred Gandt/subdueLinks.js]] Added by Script installer
//importScript('User:Lenore/autolink.js'); //Linkback: [[User:Lenore/autolink.js]] Added by Script installer
//importScript('User:Huji/Gadget-intropreload.js'); //Linkback: [[User:Huji/Gadget-intropreload.js]] Added by Script installer
//importScript('User:Zellfaze/expandEdit.js'); //Linkback: [[User:Zellfaze/expandEdit.js]] Added by Script installer
//importScript('User:Fred Gandt/sectionFooters.js'); //Linkback: [[User:Fred Gandt/sectionFooters.js]] Added by Script installer
//importScript('User:Bility/copySectionLink.js'); //Linkback: [[User:Bility/copySectionLink.js]] Added by Script installer
//importScript('User:Technical 13/Scripts/Gadget-veditLinks.js'); //Linkback: [[User:Technical 13/Scripts/Gadget-veditLinks.js]] Added by Script installer
//importScript('User:Mabdul/saveandedit.js'); //Linkback: [[User:Mabdul/saveandedit.js]] Added by Script installer
//importScript('User:Equazcion/LiveDiffLink.js'); //Linkback: [[User:Equazcion/LiveDiffLink.js]] Added by Script installer
//importScript('User:IagoQnsi/addptlinks.js'); //Linkback: [[User:IagoQnsi/addptlinks.js]] Added by Script installer
//importScript('User:קיפודנחש/viewstats.js'); //Linkback: [[User:קיפודנחש/viewstats.js]] Added by Script installer
//importScript('User:V111P/js/smartLinkingLoader.js'); //Linkback: [[User:V111P/js/smartLinkingLoader.js]] Added by Script installer
//importScript('User:Theopolisme/Scripts/autocompleter.js'); //Linkback: [[User:Theopolisme/Scripts/autocompleter.js]] Added by Script installer
//importScript('User:ערן/autocomplete.js'); //Linkback: [[User:ערן/autocomplete.js]] Added by Script installer
//importScript('User:BenjaminWillJS/AjaxRollback.js'); //Linkback: [[User:BenjaminWillJS/AjaxRollback.js]] Added by Script installer
//importScript('User:Dudemanfellabra/diffs.js'); //Linkback: [[User:Dudemanfellabra/diffs.js]] Added by Script installer
//importScript('User:MusikAnimal/MoreMenu.js'); //Linkback: [[User:MusikAnimal/MoreMenu.js]] Added by Script installer
//importScript('User:Equazcion/ToggleEditNotices.js'); //Linkback: [[User:Equazcion/ToggleEditNotices.js]] Added by Script installer
//importScript('User:Anomie/useridentifier.js'); //Linkback: [[User:Anomie/useridentifier.js]] Added by Script installer